package net.pinwy.namespace;

import java.io.File;

import android.R.integer;
import android.R.string;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.ContentValues;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.RatingBar;
import android.widget.RatingBar.OnRatingBarChangeListener;
import android.widget.TextView;
import android.widget.Toast;

public class HolaMundoActivity extends Activity {
	EditText txtNombre, txtId;
	private Button btnGuardar, btnCancelar, btnEliminar, btnMostrar, btnFoto;
	private SQLiteDatabase baseDatos;
	private RatingBar sbRating;
	private CheckBox chbVista;
	Intent intent =  new Intent(MediaStore.ACTION_IMAGE_CAPTURE);

	private static final String TAG = "bdpeliculas";
	private static final String NombreBd = "peliculas";
	private static final String TablaPeliculas = "capeliculas";
	private static String name = "";
	private static boolean bChecado = false;
	private static int TAKE_PICTURE = 1;
	private static int SELECT_PICTURE = 2;
	private static float fRating = 0;	
	
	int code = TAKE_PICTURE;

	// guardamos en un String toda la creación de la tabla
	private static final String crearTablaPeliculas = "create table if not exists "
			+ " capeliculas (codigo integer primary key autoincrement, "
			+ " nombre text not null, id text not null, vista boolean not null, rating float not null);";

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);

		txtNombre = (EditText) findViewById(R.id.txtNombre);
		txtId = (EditText) findViewById(R.id.txtId);
		btnGuardar = (Button) findViewById(R.id.btnAgregar);
		btnCancelar = (Button) findViewById(R.id.btnCancelar);
		btnEliminar = (Button) findViewById(R.id.btnEliminar);
		btnMostrar = (Button) findViewById(R.id.btnMostrar);
		sbRating = (RatingBar) findViewById(R.id.sbRating);
		chbVista = (CheckBox) findViewById(R.id.cbVista);
		btnFoto = (Button) findViewById(R.id.btnFoto);
		
		name = Environment.getExternalStorageDirectory() + "/test.jpg";
		
		sbRating.setOnRatingBarChangeListener(new OnRatingBarChangeListener() {
			
			@Override
			public void onRatingChanged(RatingBar ratingBar, float rating,
					boolean fromUser) {
				fRating = Float.valueOf(rating);
			}
		});
		
		// Guardar la pelicula actual en la base de datos
		btnGuardar.setOnClickListener(new View.OnClickListener() {
			public void onClick(View v) {

				// Abrir la base de datos, se creará si no existe
				abrirBasedatos();
				
				//revisamos el chechBox, para guardar el status en la base de datos 
				if ( chbVista.isChecked() == true ){
					bChecado = true;
				}
				else
				{
					bChecado = false;
				}
				// Insertar una fila o registro en la tabla "contacto"
				// si la inserción es correcta devolverá true
				boolean resultado = insertarFila(
						txtNombre.getText().toString(), txtId.getText()
								.toString(), bChecado, fRating);
				if (resultado == true) {
					Toast.makeText(getApplicationContext(),
							"Contacto añadido correctamente", Toast.LENGTH_LONG)
							.show();
				} else {
					Toast.makeText(getApplicationContext(),
							"Error al añadir pelicula", Toast.LENGTH_LONG)
							.show();
				}

			}
		});
		
		//Eliminar la base de datos de la agenda
	    btnEliminar.setOnClickListener(new View.OnClickListener() 
	    {
	      public void onClick(View v) 
	      {
	        //Mostrar un mensaje de confirmación antes de eliminar la base de datos  
	      	AlertDialog.Builder alertDialog = new AlertDialog.Builder(HolaMundoActivity.this);
	      	alertDialog.setMessage("¿Desea eliminar la base de datos por completo?");
	      	alertDialog.setTitle("Eliminar agenda...");
	      	alertDialog.setIcon(android.R.drawable.ic_dialog_alert);
	      	alertDialog.setCancelable(false);
	      	alertDialog.setPositiveButton("Sí", new DialogInterface.OnClickListener() 
	          {
	            public void onClick(DialogInterface dialog, int which) 
	            {
	              try 
	              {  
	                  Toast.makeText(getApplicationContext(), 
	                		  "Eliminando base de datos: " + NombreBd, Toast.LENGTH_LONG).show();
	                  boolean resultado = deleteDatabase(NombreBd);
	                  if(resultado) 
	                    Toast.makeText(getApplicationContext(), 
	                    	  "Base de datos eliminada correctamente", Toast.LENGTH_LONG).show();
	                    else 
	                      Toast.makeText(getApplicationContext(), 
	                    	  "No se ha podido eliminar la base de datos", Toast.LENGTH_LONG).show();            	  
	              } 
	              catch (Exception e) 
	              {
	                Toast.makeText(getApplicationContext(), 
	              		  "No se ha podido eliminar la base de datos", Toast.LENGTH_LONG).show();
	              }
	            } 
	          }); 
	          alertDialog.setNegativeButton("No", new DialogInterface.OnClickListener() 
	          {
	            public void onClick(DialogInterface dialog, int which) 
	            {
	              Toast.makeText(getApplicationContext(), 
	              		"Eliminación de base de datos cancelada", Toast.LENGTH_LONG).show();
	            } 
	          }); 
	          alertDialog.show();

	      }
	    }); 
		
		//Cerrar aplicación Android
	    btnCancelar.setOnClickListener(new View.OnClickListener() 
	    {
	      public void onClick(View v) 
	      {
	    	  finish();
	      }
	    }); 
	    
	  //Mostrar los datos de la base de datos en otra pantalla
	    btnMostrar.setOnClickListener(new View.OnClickListener() 
	    {
	      public void onClick(View v) 
	      {
	    	  ejecutar();	    	  
	      }
	    });
	    
	    btnFoto.setOnClickListener(new View.OnClickListener() 
	    {
	      public void onClick(View v) 
	      {
	    	  //ejecutar();
	    	  /*intent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.INTERNAL_CONTENT_URI);
	    	    //code = SELECT_PICTURE;
	    	  	code = TAKE_PICTURE;
	    	    startActivityForResult(intent, code);
	    	    */
	    	  Intent intent =  new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
	    	  Uri output = Uri.fromFile(new File(name));
	    	  intent.putExtra(MediaStore.EXTRA_OUTPUT, output);
	    	  code = TAKE_PICTURE;
	    	  startActivityForResult(intent, code);
	      }
	    });
	    
	    
	    //mostrar la barra de estrellas
	    chbVista.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				if (((CheckBox)v).isChecked() == true) {
					Toast.makeText(getApplicationContext(), "Evaluando Pelicula", Toast.LENGTH_SHORT);
					sbRating.setVisibility(RatingBar.VISIBLE);//visible es el numero 1 
					
				} else {
					Toast.makeText(getApplicationContext(), "Hay que verla", Toast.LENGTH_SHORT);
					sbRating.setVisibility(RatingBar.INVISIBLE);//invisible es el numero 4
				}
			}
	    	
	    });
	    

	}

	// Método que realiza la inserción de los datos en nuestra tabla peliculas
	private boolean insertarFila(String nombre, String id, boolean bChecado, float fRating) {
		ContentValues values = new ContentValues();
		values.put("nombre", nombre);
		values.put("id", id);		
		values.put("vista", bChecado);
		values.put("rating", fRating);
		Toast.makeText(getApplicationContext(),
				"Nombre: " + nombre + ", " + "id: " + id + "la vi: " + bChecado + "Rating" + " " + fRating, Toast.LENGTH_LONG)
				.show();
		try {
			return (baseDatos.insert(TablaPeliculas, null, values) > 0);
		} catch (Exception e) {
			Log.i(TAG, "Error al abrir o crear la base de datos" + e);
		}
		return false;
		
	}
	
	// Procedimiento para abrir la base de datos
		// si no existe se creará, también se creará la tabla contacto
		private void abrirBasedatos() {
			try {
				baseDatos = openOrCreateDatabase(NombreBd, MODE_WORLD_WRITEABLE,
						null);
				baseDatos.execSQL(crearTablaPeliculas);
			} catch (Exception e) {
				Log.i(TAG, "Error al abrir o crear la base de datos" + e);
			}
		}
	
	public void ejecutar() {
        Intent i = new Intent(this, Result.class );
        i.putExtra("Lista", "luis");
        startActivity(i);        
   }
   
}